package com.dz.lm.service.userapply;

import com.dz.lm.common.dto.PageDto;
import com.dz.lm.common.dto.UserApplyDTO;
import com.dz.lm.common.exception.ServiceException;
import com.dz.lm.domain.userapply.UserApply;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.Map;

/**产品申请服务层
 * @version 1.8;
 * @author: LDY;
 * @Description;
 * @Date: Created in 2020/3/7 20:35;
 */
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)

public interface UserApplyService {
    /**
     * 发起申请
     * @param subUserId 申请人
     * @param productId 产品
     * @param remark 备注
     * @param template 自定义内容 json
     * @param platform 手机类型
     * @return
     * @throws ServiceException
     */
    int add(int subUserId,int productId,String remark,String template,String urls,String platform,String province ,String city ,String area ,double price) throws ServiceException;

    /**
     *查询列表
     * @param pageNum
     * @param rows
     * @param supUserId 首请人
     * @param subUserId 申请人
     * @param agentUid 代理人
     * @param productId 产品
     * @param status 状态 1 待接单 2拒绝 3-已提交
     * @return
     * @throws ServiceException
     */
    PageDto query(int pageNum,int rows,int supUserId,int subUserId,int agentUid,int productId,int status)throws ServiceException;

    /**
     * 处理申请
     * @param applyId 主键
     * @param status 状态 0 待接单 -1拒绝 1-已提交
     * @param amount 成交金额
     * @param remark 评论
     * @param applyContent 申请通过的私信
     * @param platform 手机
     * @return
     * @throws ServiceException
     */
    int handleApply(int applyId,int status,double amount,int productId,String remark,UserApplyDTO dto,String applyContent,String platform) throws ServiceException;
    /**
     *查询数量
     * @param supUserId 受理人/isAgent true时包含,代理人
     * @param subUserId 申请人
     * @param productId 产品
     * @param agentUid 代理人
     * @param status 状态 1 待接单 2拒绝 3-已提交
     * @param isEffect 有效 status！=2
     * @param isHandle 未处理ture
     * @param applyDot 申请人红点
     * @param handleDot 被申请人红点
     * @return
     * @throws ServiceException
     */
    int querCount(int supUserId,int subUserId,int agentUid,int productId,int status,boolean isAgent,boolean isEffect,boolean isHandle,int applyDot,int handleDot) throws ServiceException;

    /**
     * 详情
     * @param applyId
     * @param  supUid 受请人
     * @param  subUid 申请人
     * @param  agentUid 代理人
     * @return
     * @throws ServiceException
     */
    UserApplyDTO getDetail(int applyId,int supUid,int subUid,int agentUid) throws ServiceException;

    UserApplyDTO get(int applyId , boolean isDetail)throws ServiceException;

    /**
     * 小程序上传照片
     * @param map
     * @return
     * @throws ServiceException
     */
    int updateImage(Map map) throws ServiceException;

    /**
     * 查询公司产品的申请数量
     * @param comPid
     * @return
     * @throws ServiceException
     */
    int queryCompProudctCount(int comPid) throws ServiceException;

    int update(UserApply userApply) throws ServiceException;
}
